import router from "@/router/index"
import store from "@/store"

router.beforeEach((to, from, next) => {
	const whiteList = ['/login'] // 白名单
	let token = store.getters.GET_TOKEN;
	let hasRoutes = store.state.hasRoutes;
	let menuList = store.getters.GET_MENULIST;
	console.log('menuList')
	console.log(menuList)
	if (token) {
		if (!hasRoutes) {
			bindRoute(menuList);
			store.commit("SET_ROUTES_STATE", true);
		}
		next();
	} else {
		if (whiteList.includes(to.path)) {
			next();
		} else {
			next("/login");
		}
	}
})
// 动态绑定路由
const bindRoute = (menuList) => {
	console.log(menuList)
	let newRoutes = router.options.routes;
	menuList.forEach(menu => {
		if (menu.children) {
			menu.children.forEach(m => {
				// 菜单转成路由
				let route = menuToRoute(m, menu.name);
				if (route) {
					newRoutes[0].children.push(route); // 添加到路由管理
				}
			})
		}
	})
	// 重新添加到路由
	newRoutes.forEach(route => {
		router.addRoute(route);
	})
	return true
}
// 菜单转成路由
const menuToRoute = (menu, parentName) => {
	if (!menu.component) {
		return null
	} else {
		let route = {
			name: menu.name,
			path: menu.path,
			meta: {
				parentName: parentName
			}
		}
		route.component = () => import('@/views/' + menu.component + '.vue')
		return route
	}
}
